属性查询 Sample详情
最后更新时间:2019年7月5日
属性条件查询,即为属性关键字查询,根据选择图层、字段、关键字对图层要素进行查询并显示查询结果。通过结果要素可获取其空间信息与属性信息,根据应用需求解析结果,并选择适合的方式展现。属性查询与空间查询整体思路一致,大部分步骤也相同,主要区别在于属性查询不需要设置空间范围条件,需设置属性过滤条件。
1
与空间查询类似,首先需准备待查询的图层数据。
//获取地图对象 MGSMap *map=_mapView.map; //根据图层名称获取其索引值 long layerIndex=[map indexOfName:@"水域"]; //获取矢量图层 MGSVectorLayer *vectorLayer=(MGSVectorLayer *)[map getLayerAtIndex:layerIndex];
2
创建查询对象,为其设置构造的查询属性条件等参数。
//通过矢量图层创建查询对象 MGSFeatureQuery *featureQuery=[[MGSFeatureQuery alloc] initWithVectorLayer:vectorLayer]; //设置属性查询条件,根据想要查询的字段、关键字、属性条件,构造SQL查询语句 [featureQuery setWhereClause:@"Name LIKE '%公园%'"]; //设置每页结果数目,默认为10 [featureQuery setPageSize:20];
3
执行查询操作,并获取查询结果。
//进行要素查询 MGSFeaturePagedResult *queryResult=[featureQuery query]; //分页获取要素数组 for (int i=1; i<=queryResult.pageCount; i++) { //注意getPageWithPageNumber是从1开始的 NSArray<MGSFeature *> *featureArray=[queryResult getPageWithPageNumber:i]; //对每一页获取要素 for (int j=0; j<[featureArray count]; j++) { //获取要素 MGSFeature *feature=featureArray[j]; } }
4
解析查询返回的结果要素,可通过标注、列表等形式展示给用户。
//将要素转化成图形 NSArray<MGSGraphic *> *graphicArray=[feature toGraphicsWithAttributes:YES]; //绘制图形 [_mapView.graphicsOverlay addGraphics:graphicArray]; [_mapView refresh]; //额外操作:根据需要执行 //获取要素的属性:键值对的形式 NSDictionary<NSString *,NSString *> *attribute = [_modifyFeature attributes]; //获取要素的几何对象:可判断要素几何对象类型,进而得到相关信息:长度、面积等 MGSGeometry *geometry=[feature geometry]; //获取要素的几何信息:可获取颜色、填充符号、点大小等等 MGSGeomInfo *geomInfo=[feature info];
实现效果如下图所示: